package com.grape.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.grape.vo.BaseVo;
import com.grape.entity.SysMenu;
import com.grape.vo.MenuVO;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 *
 * 菜单权限表 服务类
 *
 * @author  putao
 * @email   2628279194@qq.com
 */
public interface ISysMenuService extends IService<SysMenu>, BaseService<SysMenu> {

    /**
     * 分页
     * @param baseVo 统一分页对象
     * @return 菜单权限表集合
     */
    List<SysMenu> listData(BaseVo baseVo);

    /**
     * 修改
     * @param sysMenu 菜单权限表对象
     */
    void updateData(SysMenu sysMenu);

    /**
     * 新增
     * @param sysMenu 菜单权限表对象
     * @return 菜单权限表对象
     */
    SysMenu insertData(SysMenu sysMenu);

    /**
     * 删除
     * @param id    单据id
     * @return      删除条数
     */
    int deleteData(String id);

    /**
     * 根据id查询详情
     * @param id    菜单id
     * @return      菜单权限表对象
     */
     SysMenu detail(String id);

    /**
     * 根据角色id查询菜单
     *
     * @param roleId 角色id
     * @return          菜单VO集合
     */
    List<MenuVO> getMenuByRoleId(String roleId);

    /**
     * 根据当前用户查询菜单列表
     * @return      菜单VO集合
     */
    List<MenuVO> getMenuByUserId();

    /**
     * 根据角色id查询角色菜单
     * @param roleId            角色id
     * @param parentMenuList    父菜单集合
     * @return                  菜单集合
     */
    List<SysMenu> getByRoleId(String roleId, List<MenuVO> parentMenuList) throws ExecutionException, InterruptedException;

    /**
     * 查询所有的菜单并转树形
     * @return      菜单集合
     */
    List<SysMenu> listAllForTree();

    /**
     * 根据id删除菜单
     * @param id    菜单id
     * @return      删除条数
     */
    int deleteMenu(String id);
}

